algorithmic puzzle